package org.example.demo2;

/**
 * @author Gong.Yang
 */
public class DemoStringTable {
    public static void main(String[] args) {
        String s1 = "a";
        String s2 = "b";
        String s3 = "ab";

        String s4 = s1 + s2;  //s1、s2是变量，在运行期间再动态拼接
        System.out.println(s4 == s3); //false

        String s5 = "a" + "b";  //javac 在编译期间优化成了 s5 = "ab"
        System.out.println(s5 == s3); //true

        String s = new String("x") + new String("y");
        String intern = s.intern();//将这个字符串对象尝试放入串池，如果有则并不会放入，如果没有则放入串池，会把串池中的对象返回
        System.out.println(s == "xy");  //true
        System.out.println(intern == "xy");//true

        String x1 = "az";          //提前放入串池
        String x2 = new String("a") + new String("z");
        System.out.println(x1 == x2);       //false
        String x3 = x2.intern();        //放入失败，返回串池中的对象
        System.out.println(x1 == x3);      //true


    }
}
